package org.overture.codegen.analysis.vdm;
import java.util.HashSet;
import java.util.Set;
import org.overture.ast.analysis.DepthFirstAnalysisAdaptor;
import org.overture.ast.node.INode;
public abstract class VdmAnalysis extends DepthFirstAnalysisAdaptor
{
protected INode topNode;
public VdmAnalysis(INode topNode)
{
this.topNode = topNode;
}
protected boolean proceed(INode node)
{
if (node == topNode)
{
return true;
}
INode parent = node.parent();
Set<INode> visited = new HashSet<INode>();
while (parent != null && !visited.contains(parent)
&& this.topNode != parent)
{
visited.add(parent);
parent = parent.parent();
}
return this.topNode == parent;
}
}